home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / apache_slash.nasl < prev    next >
Text File  |  2005-03-31  |  3KB  |  101 lines

  1. #
  2. # This script was written by John Lampe (j_lampe@bellsouth.net)
  3. #
  4. # changes by rd : - script description
  5. #                 - more verbose report
  6. #                 - check for k < 16 in find_index()
  7. #                 - script id
  8. #
  9. # See the Nessus Scripts License for details
  10. #
  11. if(description)
  12. {
  13.   script_id(10440);
  14.   script_bugtraq_id(1284);
  15.  script_version ("$Revision: 1.27 $");
  16.   script_cve_id("CVE-2000-0505");
  17.   script_name(english:"Check for Apache Multiple / vulnerability");
  18.   desc["english"] = "
  19. Certain versions of Apache for Win32 have a bug wherein remote users
  20. can list directory entries.  Specifically, by appending multiple /'s
  21. to the HTTP GET command, the remote Apache server will list all files
  22. and subdirectories within the web root (as defined in httpd.conf).
  23.  
  24.  
  25. Solution : Upgrade to the most recent version of Apache at www.apache.org
  26. Risk factor : Low";
  27.  
  28.   script_description(english:desc["english"]);
  29.   script_summary(english:"Send multiple /'s to Windows Apache Server");
  30.   script_category(ACT_GATHER_INFO);
  31.   script_family(english:"Remote file access");
  32.   script_copyright(english:"By John Lampe....j_lampe@bellsouth.net");
  33.   script_dependencies("find_service.nes", "http_version.nasl", "www_fingerprinting_hmap.nasl");
  34.   script_require_keys("www/apache");
  35.   script_require_ports("Services/www", 80);
  36.   exit(0);
  37. }
  38.  
  39.  
  40.  
  41. #
  42. # The script code starts here
  43.  
  44. include("http_func.inc");
  45. include("http_keepalive.inc");
  46.  
  47.  
  48.  
  49. function find_index(k) {
  50.  
  51.     if(k < 16)k = 17;
  52.     for (q=k-16; q<k; q=q+1) {
  53.             buf = http_get(item:crap(length:q, data:"/"), port:port);
  54.         incoming = http_keepalive_send_recv(port:port, data:buf);
  55.         if ( incoming == NULL ) exit(0);
  56.             if ("Index of /" >< incoming)  {
  57.                 my_warning = "
  58. It is possible to list a directories contents by appending multiple /'s
  59. in the HTTP GET command, this is only
  60. a vulnerability on Apache/Win32 based webservers. ";
  61.                 my_warning = my_warning + string (q, " slashes will cause the directory contents to be listed", "\n\n")
  62. ;
  63.                 my_warning = my_warning +
  64. "Solution : Upgrade to the most recent version of Apache at www.apache.org
  65. Risk factor : Low";
  66.  
  67.                 security_warning(port:port, data:my_warning);
  68.                 http_close_socket(soc);
  69.                 exit(0);
  70.             }
  71.          
  72.     }
  73.     exit(0);
  74. }
  75.  
  76.  
  77.  
  78.  
  79. port = get_http_port(default:80);
  80.  
  81. sig = get_kb_item("www/hmap/" + port + "/description");
  82. if ( sig && "Apache" >!< sig ) exit(0);
  83.  
  84.  
  85. req = http_get(item:"/", port:port);
  86. res = http_keepalive_send_recv(port:port, data:req);
  87. if ( res == NULL ) exit(0);
  88. if ( "Index of /" >< res ) exit(0);
  89.  
  90. if(get_port_state(port)) {
  91.     for (i=2; i < 512; i=i+16) {
  92.             buf = http_get(item:crap(length:i, data:"/"), port:port);
  93.         incoming = http_keepalive_send_recv(port:port, data:buf);
  94.         if(incoming == NULL)exit(0);
  95.             if ("Forbidden" >< incoming) {
  96.                   find_index(k:i);
  97.             }
  98.         
  99.     }
  100. }
  101.